#ifndef SPITEST_H
#define SPITEST_H

#include <QObject>
#include <QProcess>

class SpiTest : public QObject
{
    Q_OBJECT
public:
    explicit SpiTest(QObject *parent = nullptr);

    // 发送SSH命令的接口
    Q_INVOKABLE void sendSshCommand(const QString &host, const QString &user, const QString &command);
    Q_INVOKABLE void sendRemoteCommand(const QString &host, const QString &user, const QString &commandPat);  // 新增接口，接受路径作为参数

    Q_PROPERTY(QString  resultOutput       READ resultOutput        NOTIFY resultOutputChanged)

    QString resultOutput     () {return _resultOutput;}

signals:
    // 信号：命令输出
    void commandOutput(const QString &output);

    // 信号：命令错误
    void commandError(const QString &error);

    // 信号：进程完成
    void processFinished();

    void resultOutputChanged(QString resultOutput);

private slots:
    // 槽：处理SSH命令输出
    void onProcessReadyReadStandardOutput();

    // 槽：处理SSH命令错误输出
    void onProcessReadyReadStandardError();

    // 槽：处理进程完成
    void onProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);

private:
    // 执行SSH命令的私有函数
    void executeSshCommand(const QString &host, const QString &user, const QString &command);
    void executeRemoteSshCommand(const QString &host, const QString &user, const QString &command);

    QString _resultOutput;

    QProcess *process;  // QProcess对象
};
#endif // SPITEST_H
